# This Python file uses the following encoding: utf-8

from alumnes.models import  Nivell
from avaluacioQualitativa.models import  RespostaAvaluacioQualitativa
from django.db.models import Q
from utils import tools
from assignatures.models import Assignatura
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from utils.tools import write_pdf


#http://xhtml2pdf.appspot.com/static/pisa-en.html
def reportQualitativa( qualitativa , alumnes = [], grups = [], request = None):

    import locale
    locale.setlocale(locale.LC_TIME, 'ca_ES.utf8')
    
    reports = []
    
    for nivell in Nivell.objects.all():
        for curs in nivell.curs_set.all():
            for grup in curs.grup_set.all():
                q_teRespostes = Q(respostaavaluacioqualitativa__isnull = False) 
                q_alumneTriat =  Q(pk__in = [a.pk for a in alumnes ])
                q_grupTriat = Q( grup__in = grups )
                q_filtre_alumn = q_teRespostes & ( q_alumneTriat | q_grupTriat )
                               
                for alumne in grup.alumne_set.filter( q_filtre_alumn ).distinct(): 
                    report = tools.classebuida()
                    
                    report.alumne = alumne
                    report.respostes = []
                    report.data = qualitativa.data_tancar_avaluacio.strftime( '%d de %B de %Y' )
                    
                    report.tutors = u', '.join( [u'Sr(a) ' + unicode(t) for t in alumne.tutorsDeLAlumne() ] )
                    
                    for assignatura in Assignatura.objects.filter( 
                                        respostaavaluacioqualitativa__qualitativa = qualitativa,
                                        respostaavaluacioqualitativa__alumne = alumne  
                                        ).distinct():
                        resposta = tools.classebuida()
                        resposta.assignatura = assignatura.getLongName()
                        resposta.frases = []
                        for respostaQualitativa in RespostaAvaluacioQualitativa.objects.filter(
                                         alumne = alumne,
                                         assignatura = assignatura ):

                            resposta.frases.append(respostaQualitativa.item ) 
                        
                        report.respostes.append( resposta )

                        #endfor resposta
                    
                    if report: reports.append( report )      
                    
                #endfor alumne   
                            
                       
    #from django.template import Context                              
    from appy.pod.renderer import Renderer
    import cgi
    import os
    from django import http
    import time
    
    excepcio = None
    contingut = None
    try:
        
        #resultat = StringIO.StringIO( )
        resultat = "/tmp/ghap-temp-{0}-{1}.odt".format( time.time(), request.session.session_key )
        #context = Context( {'reports' : reports, } )
        path = os.path.join(os.path.dirname(__file__), 'templates/qualitativa.odt')
        renderer = Renderer(path, {'reports' : reports, }, resultat)  #'/home/usuari/workspace/ghap/src/ghap/avaluacioQualitativa/templates/qualitativa.odt'
        renderer.run()
        docFile = open(resultat, 'rb')
        contingut = docFile.read()
        docFile.close()
        os.remove(resultat)
        
    except Exception, e:
        excepcio = unicode( e )
        
    if not excepcio:
        response = http.HttpResponse( contingut, mimetype='application/vnd.oasis.opendocument.text')
        response['Content-Disposition'] = 'attachment; filename=qualitativa.odt'
    else:
        response = http.HttpResponse('''Gremlin's ate your pdf! %s''' % cgi.escape(excepcio))

    
    return response
     
            





#http://xhtml2pdf.appspot.com/static/pisa-en.html
def reportQualitativa2( qualitativa , alumnes = [], grups = [], request = None):

    import locale
    locale.setlocale(locale.LC_TIME, 'ca_ES.utf8')
    
    reports = []
    
    for nivell in Nivell.objects.all():
        for curs in nivell.curs_set.all():
            for grup in curs.grup_set.all():
                q_teRespostes = Q(respostaavaluacioqualitativa__isnull = False) 
                q_alumneTriat =  Q(pk__in = [a.pk for a in alumnes ])
                q_grupTriat = Q( grup__in = grups )
                q_filtre_alumn = q_teRespostes & ( q_alumneTriat | q_grupTriat )
                               
                for alumne in grup.alumne_set.filter( q_filtre_alumn ).distinct(): 
                    report = []
                    taula = tools.classebuida()
                    taula.titol = tools.classebuida()
                    taula.titol.contingut = ""
                    taula.classe = 'titol'
                    taula.capceleres = []
                    taula.printIfEmpty = True
                    
                    capcelera = tools.classebuida()
                    capcelera.amplade = 900
                    capcelera.contingut = u'''Butlletí de qualificacions de l'avaluació qualitativa.'''.upper()
                    taula.capceleres.append(capcelera)
                    taula.fileres = []

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'Benvolguts tutors/res'
                    filera.append(camp)      
                    taula.fileres.append(filera)              
                    
                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'''L’equip de professors de l’alumne/a {0} que cursa {1} us fem arribar un full de seguiment 
                    de començament de curs. En aquest butlletí us notifiquem algunes observacions que ens semblen significatives en 
                    aquest inici del curs. Esperem que us sigui d’utilitat per prendre les decisions correctes pel normal 
                    desenvolupament del curs.'''.format( alumne, alumne.grup )
                    filera.append(camp)      
                    taula.fileres.append(filera)              
                    
                    report.append(taula)
        
                    taula = tools.classebuida()
                    taula.titol = tools.classebuida()
                    taula.titol.contingut = ""
                    taula.capceleres = []
                    taula.classe = 'pijama'
                    
                    capcelera = tools.classebuida()
                    capcelera.amplade = 300
                    capcelera.contingut = u'''Matèria'''
                    taula.capceleres.append(capcelera)

                    capcelera = tools.classebuida()
                    capcelera.amplade = 700
                    capcelera.contingut = u'''Comentaris'''
                    taula.capceleres.append(capcelera)   
                    
                    taula.fileres = []                 
                    
                    for assignatura in Assignatura.objects.filter( 
                                        respostaavaluacioqualitativa__qualitativa = qualitativa,
                                        respostaavaluacioqualitativa__alumne = alumne  
                                        ).distinct():
                        
                        esPrimeraResposta = True
                        for resposta in RespostaAvaluacioQualitativa.objects.filter(
                                         alumne = alumne,
                                         assignatura = assignatura ):
                            
                            filera = []
                            
                            camp = tools.classebuida()
                            camp.contingut = u'{0}'.format( assignatura.nom_assignatura if esPrimeraResposta else '' )
                            filera.append(camp)

                            camp = tools.classebuida()
                            camp.contingut = u'{0}'.format( resposta.item  )
                            filera.append(camp)   
                                                                                 
                            taula.fileres.append( filera )
                            
                            esPrimeraResposta = False
                        #endfor resposta
                        
                    #endfor assignatura
                    report.append(taula) #------------------------------------------------------------------------------
                    
                    taula = tools.classebuida()
                    taula.titol = tools.classebuida()
                    taula.titol.contingut = ""
                    taula.classe = 'pijama'
                    taula.capceleres = []
                    
                    capcelera = tools.classebuida()
                    capcelera.amplade = 700
                    capcelera.contingut = u'''Comentari del tutor/a'''
                    taula.capceleres.append(capcelera)
                    taula.fileres = []

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u''
                    filera.append(camp)      
                    taula.fileres.append(filera)  

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'_____________________________________________________________________________________'
                    filera.append(camp)      
                    taula.fileres.append(filera)  
                    taula.fileres.append(filera)  
                    taula.fileres.append(filera)  
                    report.append(taula) #------------------------------------------------------------------------------

                    taula = tools.classebuida()
                    taula.titol = tools.classebuida()
                    taula.titol.contingut = ""
                    taula.classe = 'pijama'
                    taula.capceleres = []
                    taula.fileres = []
                                        
                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'Atentament,'
                    filera.append(camp)      
                    taula.fileres.append(filera)  

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'{0}'.format( u','.join( [u'Sr(a) ' + unicode(t.professor) for t in alumne.tutorsDeLAlumne() ] ) )  
                    filera.append(camp)      
                    taula.fileres.append(filera)

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'Figueres, a {0}'.format( qualitativa.data_tancar_avaluacio.strftime( '%d de %B de %Y' ) )  
                    filera.append(camp)      
                    taula.fileres.append(filera)

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'''................................................................................
                    .......................................................................................'''
                    filera.append(camp)      
                    taula.fileres.append(filera)
                    report.append(taula) #------------------------------------------------------------------------------
                    
                    taula = tools.classebuida()
                    taula.titol = tools.classebuida()
                    taula.titol.contingut = ""
                    taula.classe = 'pijama'
                    taula.capceleres = []
                    taula.fileres = []
                                        
                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'''El/la Sr/a ______________________________________ com a pare / mare / tutor/a de l'alumne
                    {0} de {1}, he rebut el butlletí de qualificacions de l'avaluació qualitativa.'''.format( alumne, alumne.grup )
                    filera.append(camp)      
                    taula.fileres.append(filera)  
                    
                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'Signat:'
                    filera.append(camp)      
                    taula.fileres.append(filera)  

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'DNI núm:'
                    filera.append(camp)      
                    taula.fileres.append(filera)  

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u''
                    filera.append(camp)      
                    taula.fileres.append(filera)  
                    taula.fileres.append(filera)  

                    filera = []
                    camp = tools.classebuida()
                    camp.contingut = u'_________________, ____ de _______________ de {0}'.format( qualitativa.data_tancar_avaluacio.year )
                    filera.append(camp)      
                    taula.fileres.append(filera)  
                    report.append(taula) #------------------------------------------------------------------------------

                    
                    if report: reports.append( report )      
                    
                #endfor alumne   
                            
                       
                              
    formatPDF = True
    if formatPDF:
        return write_pdf('pdfReport.html',{
            'pagesize' : 'A4',
            'reports' : reports,
            })
    else:
        return render_to_response(
            'report.html',
                {'report': report,
                 'head': u'Avaluacions Qualitatives' ,
                },
                context_instance=RequestContext(request))      



